package com.edu.employee.service;

import com.edu.commons.EmpVO;
import com.edu.commons.PageVO;
import com.edu.employee.pojo.dto.EmpInfoDTO;
import com.edu.employee.pojo.dto.EmpLoginDTO;
import com.edu.employee.pojo.dto.EmpQueryDTO;
import com.edu.employee.pojo.dto.EmpUpdatePwdDTO;
import com.edu.employee.pojo.entity.Certificates;
import com.edu.employee.pojo.entity.EmpStatus;
import com.edu.employee.pojo.entity.Marriage;
import com.edu.employee.pojo.entity.MinZu;
import com.edu.employee.pojo.vo.EmpInfoUpdateVO;
import com.edu.employee.pojo.vo.EmpInfoVO;
import com.edu.employee.pojo.vo.EmpListVO;
import com.edu.employee.pojo.vo.EmpLoginVO;

import java.util.List;

/**
 * 员工业务接口
 */
public interface EmpService {
    /**
     * 员工登录业务
     * @param empLoginDTO 员工登录的信息
     * @return 员工登录成功的VO
     */
    EmpLoginVO login(EmpLoginDTO empLoginDTO);

    /**
     * 修改密码
     * @param updatePwdDTO 修改的密码数据
     * @param empVO 修改人
     */
    void updatePwd(EmpUpdatePwdDTO updatePwdDTO, EmpVO empVO);

    /**
     * 查询员工个人信息
     * @param empVO 登录的员工
     * @return 个人信息
     */
    EmpInfoVO getEmpInfo(EmpVO empVO);

    /**
     * 查询员工状态列表
     * @return 员工状态列表
     */
    List<EmpStatus> getEmpStatusList();

    /**
     * 查询婚姻状况列表
     * @return 婚姻状况列表
     */
    List<Marriage> getMarriageList();

    /**
     * 查询民族列表
     * @return 民族列表
     */
    List<MinZu> getMinZuList();

    /**
     * 查询证件类型列表
     * @return 证件类型列表
     */
    List<Certificates> getTypeList();

    /**
     * 修改个人信息
     * @param empInfoDTO 修改的数据
     * @param empVO 修改人
     * @return 修改成功后，返回的头像+名称
     */
    EmpInfoUpdateVO updateEmpInfo(EmpInfoDTO empInfoDTO, EmpVO empVO);

    /**
     * 查询员工列表
     * @param empQueryDTO 分页+组合条件的封装
     * @return 查询的分页结果
     */
    PageVO<EmpListVO> getEmpList(EmpQueryDTO empQueryDTO);
}
